#!/bin/bash # DiscoInst() { ####################### # Disco da Instalação # ####################### clear di="" echo -e "\a" echo "###########################################" echo "# Disco que sera Usado para a Instalação! #" echo "###########################################" lsblk | grep 'disk' read -p "Digite o 'Disco' que sera usado na Instalação! ex.: sda > " di # if ! [[ -e /dev/$di ]] || [[ -z $di ]]; then echo -e "\a" echo "#########################################" echo "# Disco da Instalação '$di' Não Existe! #" echo "#########################################" sleep 5 DiscoInst fi } # NomeHost() { ################ # Nome do Host # ################ clear hostn="" echo -e "" echo "############################################################" echo "# Nome do Host 'Maquina' que Sera Usado para a Instalação! #" echo "############################################################" read -p "Digite o Nome do 'Host' que sera usado na Instalação! ex.: maquina1 > " hostn # if ! [[ "$hostn" ]]; then echo -e "\a" echo "##############################################" echo "# Nome do 'Host' da Instalação esta 'Vazio!' #" echo "##############################################" sleep 5 NomeHost fi } # SisArq() { #################################### # Sistema de Arquivo Ext4 ou Btrfs # #################################### clear sf="" echo -e "" echo "#####################################################################" echo "# Escolha o 'Sistema de Arquivos' que Sera Usado para a Instalação! #" echo "# ex.: Ext4 ou Btrfs #" echo "#####################################################################" read -p "Digite o 'Sistema de Arquivos' que sera usado na Instalação! ex.: Ext4 > " sf # if ! [[ "$sf" == "Ext4" || "$sf" == "Btrfs" ]]; then echo -e "\a" echo "########################################################" echo "# O 'Sistema de Arquivos' da Instalação esta 'Errado!' #" echo "########################################################" sleep 5 SisArq fi } # TamSwap() { ################### # Tamanho da Swap # ################### clear swp="" echo -e "" echo "#################################################################" echo "# Escolha o 'Tamanho da Swap' que Sera Usado para a Instalação! #" echo "# Igual a Memoria do Host '1' O dobro Da Memoria do Host '2x' #" echo "# A Memoria do Host mais uma porcentagem '%' ou Nenhuma Swap '0'#" echo "#################################################################" read -p "Digite a 'Tamanho da Swap' que sera usado na Instalação! ex.: 1 > " swp # if ! [[ "$swp" == "1" || "$swp" == "2x" || "$swp" == "%" || "$swp" == "0" ]]; then echo -e "\a" echo "####################################################" echo "# O 'Tamanho da Swap' da Instalação esta 'Errada!' #" echo "####################################################" sleep 5 TamSwap fi # if [[ "$swp" == "1" ]]; then swp="-$(free | grep Mem | awk '{print ($2/1024)}' | tr '.,' ' ' | cut -d ' ' -f1)MiB" fi # if [[ "$swp" == "2x" ]]; then swp="-$(free | grep Mem | awk '{print ($2/1024)*2}' | tr '.,' ' ' | cut -d ' ' -f1)MiB" fi # if [[ "$swp" == "%" ]]; then read -p "Digite a % que sera adicionada a Memoria do Host para Swap, sem o '%'! ex.: 5 > " swpc swp="-$(echo $swpc $(free | grep Mem) | awk '{print ($3/1024)+((($3/1024)*$1)/100)}' | tr '.,' ' ' | cut -d ' ' -f1)MiB" fi # if [[ "$swp" == "0" ]]; then swp="100%" fi # } # ########## DiscoInst ########## NomeHost ########## SisArq ########## TamSwap ########## # clear echo -e "\a" echo "#############################################" echo " Confirme os dados Da Instalação do Script!" echo " 'Disco de Instalação.: $di'" echo " 'Nome do Host........: $hostn'" echo " 'Sistema de Arquivos.: $sf'" echo " 'Tamanho da Swap.....: $(echo $swp | cut -c 2-12)'" echo "#############################################" read -p "Digite 'Sim' para Continuar a Instalação ou outra tecla pra Cancelar! > " n # if ! [[ $n = "Sim" ]]; then echo -e "\a" echo "#####################" echo "# Script Cancelado! #" echo "#####################" exit fi # ################################# # Onde sera Instalado o Sistema # ################################# destino="/mnt/install" # ################################ # Cria o Destino da instalação # ################################ if ! [[ -d $destino ]]; then mkdir $destino else umount $destino fi # swapoff -a # ############################### # Limpa o Disco da Instalação # ############################### dd if=/dev/zero of=/dev/$di bs=512 count=1 # ############################################# # Cria as Partições de Boot Root Swap e EFI # ############################################# ptd="parted -a optimal /dev/$di ---pretend-input-tty" if ! [[ -d "/sys/firmware/efi/" ]]; then SYSTEM="BIOS" echo -e "\nrm 1\nrm 2\nrm 3\nrm 4\nrm 5\nI\nq" | $ptd echo -e "mklabel msdos\nI\nq" | $ptd echo -e "mkpart primary ext4 1MiB 501MiB\nI\nq" | $ptd echo -e "mkpart primary ext4 501MiB $swp\nI\nq" | $ptd if ! [[ "$swp" == "100%" ]]; then echo -e "mkpart primary ext4 $swp 100%\nI\nq" | $ptd fi ################# # Boot Particao # ################# bp=${di}1 ################# # Root Particao # ################# rp=${di}2 ################# # Swap Particao # ################# sp=${di}3 else SYSTEM="EFI" echo -e "\nrm 1\nrm 2\nrm 3\nrm 4\nrm 5\nI\nq" | $ptd echo -e "mklabel gpt\nI\nq" | $ptd echo -e "mkpart bios 1MiB 2MiB\nI\nq" | $ptd echo -e "mkpart efi 2MiB 52MiB\nI\nq" | $ptd echo -e "mkpart boot 52MiB 552MiB\nI\nq" | $ptd echo -e "mkpart root 552MiB $swp\nI\nq" | $ptd if ! [[ "$swp" == "100%" ]]; then echo -e "mkpart swap ext4 $swp 100%\nI\nq" | $ptd fi echo -e "set 1 bios_grub on\nI\nq" | $ptd ################# # EFI Particao # ################# ef=${di}2 ################# # Boot Particao # ################# bp=${di}3 ################# # Root Particao # ################# rp=${di}4 ################# # Swap Particao # ################# sp=${di}5 ################################### # Formata a Partição EFI em Fat32 # ################################### mkfs.vfat -F32 /dev/$ef fi # clear # ####################### # Atualiza os Pacotes # ####################### apt -y update # ##################################### # Formata a Partição Boot em ext4fs # ##################################### mkfs.ext4 -F /dev/$bp # ########################### # Formata a Partição Swap # ########################### if ! [[ "$swp" == "100%" ]]; then mkswap -f /dev/$sp fi # if [[ $sf = "Ext4" ]]; then ##################################### # Formata a Partição Root em ext4fs # ##################################### mkfs.ext4 -F /dev/$rp # #################################### # Monta a Partição Root no Destino # #################################### umount $destino mount -t ext4 /dev/$rp $destino # else #################################### # Formata a Partição Root em btrfs # #################################### apt -y install btrfs-progs mkfs.btrfs -f /dev/$rp # #################################### # Monta a Partição Root no Destino # #################################### mount -t btrfs /dev/$rp $destino cd $destino/ btrfs su cr @ cd .. umount $destino mount -t btrfs /dev/$rp -o subvol=@ $destino # fi # ############################################# # Cria no Destino o Sistema com debootstrap # ############################################# apt -y install debootstrap # debootstrap --no-merged-usr noble $destino http://mirror.unesp.br/ubuntu/ # ########################################### # Cria no Destino o /etc/apt/sources.list # ########################################### cat << EOS > $destino/etc/apt/sources.list ################################################################################### #Versão Status Codinome #Ubuntu 14.04.5 LTS (Trusty Tahr) #Ubuntu 16.04.6 LTS (Xenial Xerus) #Ubuntu 18.04.5 LTS (Bionic Beaver) #Ubuntu 20.04.4 LTS (Focal Fossa) #Ubuntu 22.04.4 LTS (Jammy Jellyfish) #Ubuntu 24.04.1 LTS (Noble Numbat) ################################################################################### # #http://archive.ubuntu.com/ubuntu/ # deb http://mirror.unesp.br/ubuntu/ noble main restricted universe multiverse deb-src http://mirror.unesp.br/ubuntu/ noble main restricted universe multiverse # deb http://mirror.unesp.br/ubuntu/ noble-updates main restricted universe multiverse deb-src http://mirror.unesp.br/ubuntu/ noble-updates main restricted universe multiverse # deb http://mirror.unesp.br/ubuntu/ noble-security main restricted universe multiverse deb-src http://mirror.unesp.br/ubuntu/ noble-security main restricted universe multiverse # deb http://mirror.unesp.br/ubuntu/ noble-backports main restricted universe multiverse deb-src http://mirror.unesp.br/ubuntu/ noble-backports main restricted universe multiverse # #################################################################################### # The Ubuntu Mirror Selection Script # # https://github.com/ijash/ubuntu-fastest-mirror # # apt install wget bc curl # # wget https://raw.githubusercontent.com/ijash/ubuntu-fastest-mirror/master/run.sh # # ./run.sh -L -c BR # #################################################################################### # EOS # ################################### # Cria no Destino o /root/.bashrc # ################################### cat << EOP > $destino/root/.bashrc #!/bin/bash # export PS1='\h:\w\\\$ ' umask 022 # PS1='\[\033[1;32m\]\u\[\033[1;37m\]@\[\033[1;33m\]\h\[\033[1;32m\]|\[\033[1;36m\]\t\[\033[1;32m\]|\[\033[1;34m\]\j\[\033[1;32m\]|\[\033[0;31m\]{\\\$}\[\033[1;32m\]|\[\033[1;37m\]<\w>' # alias cls="clear" alias cp="cp -i" alias dfd="discodfd" alias dir='ls --color=auto --format=vertical' alias fim="poweroff" alias la="ls -la --color=auto" alias limpo="shutdown now" alias ll="ls -l --color=auto" alias l="ls -a --color=auto" alias ls='ls --color=auto' alias mc="source /usr/lib/mc/mc-wrapper.sh" alias mv="mv -i" alias nt="netstat -ntlp | sort" alias perm="stat -c %a " alias rebootmeu="sync & sync & reboot" alias removed="apt-get remove --purge" alias rm="rm -i" alias sd="systemctl" alias testahd="shutdown -rF now" alias where="type -all" alias which="type -path" # EOP # ############################################### # Cria no Destino o Script /tmp/chrootinst.sh # ############################################### cat << EOR > $destino/tmp/chrootinst.sh #!/bin/bash # echo "$hostn" > /etc/hostname # apt -y update # apt -y install locales echo -e "\a" dpkg-reconfigure locales # apt -y install tzdata echo -e "\a" dpkg-reconfigure tzdata # apt -y install console-setup echo -e "\a" dpkg-reconfigure console-setup # echo -e "\a" dpkg-reconfigure keyboard-configuration # apt -y install btrfs-progs mc htop net-tools network-manager openssh-server # apt -y install arch-install-scripts # mount /dev/$bp /boot # if ! [[ "$swp" == "100%" ]]; then swapon /dev/$sp fi # genfstab -U -p / > /etc/fstab # touch /etc/NetworkManager/conf.d/10-globally-managed-devices.conf # #apt -y install linux-image-generic # #apt -y install linux-headers-generic # apt -y install --install-recommends linux-generic-hwe-24.04 # apt -y install firmware-linux firmware-linux-free firmware-linux-nonfree firmware-misc-nonfree # apt -y install grub2 grub2-common # update-grub # grub-install /dev/$di # ############## # Se for EFI # ############## if [[ "$SYSTEM" = 'EFI' ]]; then mkdir /boot/efi mount /dev/$ef /boot/efi genfstab -U -p / > /etc/fstab apt -y install grub-efi grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=debootstrap --removable --recheck grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=debootubuntu --recheck update-grub umount /boot/efi fi # ####################### # Ativa o root no SSH # ####################### service ssh stop sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config service ssh start systemctl enable ssh # swapoff -a # umount /boot # RootPass() { clear echo -e "\a" echo "#####################################" echo "####### Crie a Senha do Root! #######" echo "#####################################" echo "Digite a Senha de Root para o novo Host! '$hostn'" passwd pp=\$(passwd -S root | awk '{print \$2}') if [[ "\$pp" == "L" ]]; then echo -e "\a" echo "####### ERRO!! Senha Não Confere! #######" sleep 10 RootPass else echo -e "\n" echo -e "\a" echo "#############################################" echo "####### Sistema Instalado Rebootando! #######" echo "#############################################" exit fi } # RootPass # EOR # ######################################### # Monta no Destino os /dev /sys e /proc # ######################################### mount --bind /dev $destino/dev && mount --bind /dev/pts $destino/dev/pts && mount --bind /sys $destino/sys && mount --bind /proc $destino/proc # ################################################## # Executa no Destino o Script /tmp/chrootinst.sh # ################################################## chmod +x $destino/tmp/chrootinst.sh # chroot $destino /tmp/chrootinst.sh # ############################################ # Desmonta no Destino os /dev /sys e /proc # ############################################ umount $destino/dev/pts && umount $destino/dev && umount $destino/sys && umount $destino/proc # sleep 5 # ###################### # Desmonta o Destino # ###################### umount $destino # reboot # # Selecionar a linguagen no cinnamon # Sometimes installing the 'language-selector-gnome' package # #Criar o Arquivo #/etc/sudoers.d/autorizados # User privilege specification #all ALL=(ALL) NOPASSWD: /bin/apt, /sbin/poweroff, /sbin/reboot, /sbin/halt # #Adicionar e Remover usuario do grupo sudo # #Para adicionar um usuario -M ou --no-create-home #adduser -M #Para Adicionar ao Grupo sudo #usermod -a -G sudo #Para Remover do Grupo sudo #deluser sudo #Para remover o usuario completamente e o diretorio #userdel -r #ou #deluser --remove-home #Para adicionar um usuario sem o login #adduser -r -s /bin/nologin